return FALSE;
}
- if (radial->sizes[0] && _gtk_css_number_value_get_unit (radial->sizes[0]) == GTK_CSS_PERCENT)
+ if (radial->sizes[0] && gtk_css_number_value_has_percent (radial->sizes[0]))
{
_gtk_css_parser_error (parser, "Circular gradient cannot have percentage as size");
return FALSE;
return result;
}
-GtkCssUnit
-_gtk_css_number_value_get_unit (const GtkCssValue *value)
+GtkCssDimension
+gtk_css_number_value_get_dimension (const GtkCssValue *value)
{
- g_return_val_if_fail (value->class == >K_CSS_VALUE_NUMBER, GTK_CSS_NUMBER);
+ g_return_val_if_fail (value->class == >K_CSS_VALUE_NUMBER, GTK_CSS_DIMENSION_PERCENTAGE);
- return value->unit;
+ return gtk_css_unit_get_dimension (value->unit);
+}
+
+gboolean
+gtk_css_number_value_has_percent (const GtkCssValue *value)
+{
+ g_return_val_if_fail (value->class == >K_CSS_VALUE_NUMBER, FALSE);
+
+ return gtk_css_unit_get_dimension (value->unit) == GTK_CSS_DIMENSION_PERCENTAGE;
}
double
GtkCssValue * _gtk_css_number_value_parse (GtkCssParser *parser,
GtkCssNumberParseFlags flags);
-GtkCssUnit _gtk_css_number_value_get_unit (const GtkCssValue *value);
+GtkCssDimension gtk_css_number_value_get_dimension (const GtkCssValue *value);
+gboolean gtk_css_number_value_has_percent (const GtkCssValue *value);
+
double _gtk_css_number_value_get (const GtkCssValue *number,
double one_hundred_percent);
if (value == NULL)
return FALSE;
- if (_gtk_css_number_value_get_unit (value) == GTK_CSS_NUMBER)
+ if (gtk_css_number_value_get_dimension (value) == GTK_CSS_DIMENSION_NUMBER)
values[1] = value;
else if (values[2] == NULL)
values[2] = value;
}
}
+GtkCssDimension
+gtk_css_unit_get_dimension (GtkCssUnit unit)
+{
+ switch (unit)
+ {
+ case GTK_CSS_NUMBER:
+ return GTK_CSS_DIMENSION_NUMBER;
+
+ case GTK_CSS_PERCENT:
+ return GTK_CSS_DIMENSION_PERCENTAGE;
+
+ case GTK_CSS_PX:
+ case GTK_CSS_PT:
+ case GTK_CSS_EM:
+ case GTK_CSS_EX:
+ case GTK_CSS_REM:
+ case GTK_CSS_PC:
+ case GTK_CSS_IN:
+ case GTK_CSS_CM:
+ case GTK_CSS_MM:
+ return GTK_CSS_DIMENSION_LENGTH;
+
+ case GTK_CSS_RAD:
+ case GTK_CSS_DEG:
+ case GTK_CSS_GRAD:
+ case GTK_CSS_TURN:
+ return GTK_CSS_DIMENSION_ANGLE;
+
+ case GTK_CSS_S:
+ case GTK_CSS_MS:
+ return GTK_CSS_DIMENSION_TIME;
+
+ default:
+ g_assert_not_reached ();
+ return GTK_CSS_DIMENSION_PERCENTAGE;
+ }
+}
+
char *
gtk_css_change_to_string (GtkCssChange change)
{
GTK_CSS_BOTTOM_LEFT
} GtkCssCorner;
+typedef enum /*< skip >*/ {
+ GTK_CSS_DIMENSION_PERCENTAGE,
+ GTK_CSS_DIMENSION_NUMBER,
+ GTK_CSS_DIMENSION_LENGTH,
+ GTK_CSS_DIMENSION_ANGLE,
+ GTK_CSS_DIMENSION_TIME
+} GtkCssDimension;
+
typedef enum /*< skip >*/ {
/* CSS term: <number> */
GTK_CSS_NUMBER,
GtkCssChange _gtk_css_change_for_sibling (GtkCssChange match);
GtkCssChange _gtk_css_change_for_child (GtkCssChange match);
+GtkCssDimension gtk_css_unit_get_dimension (GtkCssUnit unit);
+
char * gtk_css_change_to_string (GtkCssChange change);
void gtk_css_change_print (GtkCssChange change,
GString *string);
{
double start, end;
- if (_gtk_css_number_value_get_unit (start_border) == GTK_CSS_NUMBER)
+ if (gtk_css_number_value_get_dimension (start_border) == GTK_CSS_DIMENSION_NUMBER)
start = start_border_width * _gtk_css_number_value_get (start_border, 100);
else
start = _gtk_css_number_value_get (start_border, area_size);
- if (_gtk_css_number_value_get_unit (end_border) == GTK_CSS_NUMBER)
+ if (gtk_css_number_value_get_dimension (end_border) == GTK_CSS_DIMENSION_NUMBER)
end = end_border_width * _gtk_css_number_value_get (end_border, 100);
else
end = _gtk_css_number_value_get (end_border, area_size);